package com.yej.aiPolice.ui.activity

import android.content.Intent
import android.os.Bundle
import android.view.*
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import com.yej.aiPolice.R
import com.yej.aiPolice.ui.fragment.HomeFragment
import com.yej.aiPolice.ui.fragment.ReportFragment
import com.yej.aiPolice.ui.fragment.SearchFragment
import com.yej.aiPolice.ui.fragment.UserFragment
import kotlinx.android.synthetic.main.activity_main.*


class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
//        判断设备是否有虚拟按键，如果有paddingBottom=50dp
        // TODO 检测还有问题
        if(!deviceHasNavigationBar()){
            ll_main_activity.setPadding(0,0,0,  50.dp2px())
        }
        changeIndex(0)
        initBottomBar()
//        直接赋值传输了就不用init了
//        initFragments()

    }

    /**
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素),
     * 把转换功能添加的int类中做为扩展函数
     */
    fun Int.dp2px(): Int {
        val scale = resources.displayMetrics.density
        return (toFloat() * scale + 0.5f).toInt()
    }


    //获取是否存在NavigationBar
    open fun deviceHasNavigationBar(): Boolean {
        //通过判断设备是否有返回键、菜单键(不是虚拟键,是手机屏幕外的按键)来确定是否有navigation bar
        //通过判断设备是否有返回键、菜单键(不是虚拟键,是手机屏幕外的按键)来确定是否有navigation bar
        val hasMenuKey = ViewConfiguration.get(this)
            .hasPermanentMenuKey()
        val hasBackKey = KeyCharacterMap
            .deviceHasKey(KeyEvent.KEYCODE_BACK)

        return if (!hasMenuKey && !hasBackKey) { // 做任何你需要做的,这个设备有一个导航栏
            true
        } else false
    }
    //    val fragments : ArrayList<Fragment> = ArrayList()//临时初始化
//    因为是固定的四个fragment一开始就可以初始化
    val fragments: List<Fragment> =
        listOf<Fragment>(HomeFragment(), SearchFragment(), ReportFragment(), UserFragment())
//    private fun initFragments() {
//
//    }

    private fun initBottomBar() {
        for (i in 0 until main_bottom_bar.childCount) {
//            main_bottom_bar.getChildAt(i).setOnClickListener(object : View.OnClickListener{
//                override fun onClick(v: View?) {
//
//                }
//            })
            main_bottom_bar.getChildAt(i).setOnClickListener { view ->
                changeIndex(i)
            }
        }
    }

    private fun changeIndex(index: Int) {
        for (i in 0 until main_bottom_bar.childCount) {
            val child = main_bottom_bar.getChildAt(i)
            if (i == index) {
//                child.isEnabled = false
                //选中，禁用 enable = false
                setEnable(child, false)
            } else {
//                child.isEnabled = true
                //没选中，可用 enable = true
                setEnable(child, true)
            }

        }
        if(index == 1){
            //暂时设置在这里
            val intent : Intent = Intent(this, PicActivity::class.java)
            startActivity(intent)
        }else{
            supportFragmentManager.beginTransaction().replace(R.id.main_content, fragments[index])
                .commit()
        }
    }

    private fun setEnable(child: View, isEnable: Boolean) {
        child.isEnabled = isEnable
        //如果还有孩子
        if (child is ViewGroup) {
            for (i in 0 until child.childCount) {
                child.getChildAt(i).isEnabled = isEnable
            }
        }
    }
}
